package com.zenith.api.controller;

import com.zenith.api.feign.edu.EduServiceFeignClient;
import com.zenith.common.result.Result;
import com.zenith.common.result.PageResult;
import com.zenith.api.po.dto.edu.*;
import com.zenith.api.po.vo.edu.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 教育控制器 - API服务
 */
@Slf4j
@RestController
@RequestMapping("/api/edu")
@Tag(name = "教育管理", description = "教育管理接口")
@RequiredArgsConstructor
public class EduController {
    
    private final EduServiceFeignClient eduServiceFeignClient;
    
    // =========================== 课程管理相关接口 ===========================
    
    @Operation(summary = "创建课程")
    @PostMapping("/course/createCourse")
    public Result<EduCourseVO> createCourse(@RequestBody EduCourseDTO dto) {
        return eduServiceFeignClient.createCourse(dto);
    }

    @Operation(summary = "根据ID获取课程详情")
    @PostMapping("/course/getCourseById/{id}")
    public Result<EduCourseVO> getCourseById(@PathVariable Long id) {
        return eduServiceFeignClient.getCourseById(id);
    }

    @Operation(summary = "更新课程信息")
    @PostMapping("/course/updateCourse")
    public Result<EduCourseVO> updateCourse(@RequestBody EduCourseDTO dto) {
        return eduServiceFeignClient.updateCourse(dto);
    }

    @Operation(summary = "删除指定课程")
    @PostMapping("/course/deleteCourse/{id}")
    public Result<Void> deleteCourse(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCourse(id);
    }

    @Operation(summary = "获取课程列表")
    @PostMapping("/course/getCourseList")
    public Result<List<EduCourseVO>> getCourseList() {
        return eduServiceFeignClient.getCourseList();
    }

    // =========================== 班级管理相关接口 ===========================

    @Operation(summary = "创建班级")
    @PostMapping("/class/createClass")
    public Result<EduClassVO> createClass(@RequestBody EduClassDTO dto) {
        return eduServiceFeignClient.createClass(dto);
    }

    @Operation(summary = "根据ID获取班级详情")
    @PostMapping("/class/getClassById/{id}")
    public Result<EduClassVO> getClassById(@PathVariable Long id) {
        return eduServiceFeignClient.getClassById(id);
    }

    @Operation(summary = "更新班级信息")
    @PostMapping("/class/updateClass")
    public Result<EduClassVO> updateClass(@RequestBody EduClassDTO dto) {
        return eduServiceFeignClient.updateClass(dto);
    }

    @Operation(summary = "删除指定班级")
    @PostMapping("/class/deleteClass/{id}")
    public Result<Void> deleteClass(@PathVariable Long id) {
        return eduServiceFeignClient.deleteClass(id);
    }

    @Operation(summary = "获取班级列表")
    @PostMapping("/class/getClassList")
    public Result<List<EduClassVO>> getClassList() {
        return eduServiceFeignClient.getClassList();
    }

    // =========================== 学生管理相关接口 ===========================

    @Operation(summary = "创建学生")
    @PostMapping("/student/createStudent")
    public Result<EduStudentVO> createStudent(@RequestBody EduStudentDTO dto) {
        return eduServiceFeignClient.createStudent(dto);
    }

    @Operation(summary = "根据ID获取学生详情")
    @PostMapping("/student/getStudentById/{id}")
    public Result<EduStudentVO> getStudentById(@PathVariable Long id) {
        return eduServiceFeignClient.getStudentById(id);
    }

    @Operation(summary = "更新学生信息")
    @PostMapping("/student/updateStudent")
    public Result<EduStudentVO> updateStudent(@RequestBody EduStudentDTO dto) {
        return eduServiceFeignClient.updateStudent(dto);
    }

    @Operation(summary = "删除指定学生")
    @PostMapping("/student/deleteStudent/{id}")
    public Result<Void> deleteStudent(@PathVariable Long id) {
        return eduServiceFeignClient.deleteStudent(id);
    }

    @Operation(summary = "获取学生列表")
    @PostMapping("/student/getStudentList")
    public Result<List<EduStudentVO>> getStudentList() {
        return eduServiceFeignClient.getStudentList();
    }

    // =========================== 教师管理相关接口 ===========================

    @Operation(summary = "创建教师")
    @PostMapping("/teacher/createTeacher")
    public Result<EduTeacherVO> createTeacher(@RequestBody EduTeacherDTO dto) {
        return eduServiceFeignClient.createTeacher(dto);
    }

    @Operation(summary = "根据ID获取教师详情")
    @PostMapping("/teacher/getTeacherById/{id}")
    public Result<EduTeacherVO> getTeacherById(@PathVariable Long id) {
        return eduServiceFeignClient.getTeacherById(id);
    }

    @Operation(summary = "更新教师信息")
    @PostMapping("/teacher/updateTeacher")
    public Result<EduTeacherVO> updateTeacher(@RequestBody EduTeacherDTO dto) {
        return eduServiceFeignClient.updateTeacher(dto);
    }

    @Operation(summary = "删除指定教师")
    @PostMapping("/teacher/deleteTeacher/{id}")
    public Result<Void> deleteTeacher(@PathVariable Long id) {
        return eduServiceFeignClient.deleteTeacher(id);
    }

    @Operation(summary = "获取教师列表")
    @PostMapping("/teacher/getTeacherList")
    public Result<List<EduTeacherVO>> getTeacherList() {
        return eduServiceFeignClient.getTeacherList();
    }

    // =========================== 作业管理相关接口 ===========================

    @Operation(summary = "创建作业")
    @PostMapping("/assignment/createAssignment")
    public Result<EduAssignmentVO> createAssignment(@RequestBody EduAssignmentDTO dto) {
        return eduServiceFeignClient.createAssignment(dto);
    }

    @Operation(summary = "根据ID获取作业详情")
    @PostMapping("/assignment/getAssignmentById/{id}")
    public Result<EduAssignmentVO> getAssignmentById(@PathVariable Long id) {
        return eduServiceFeignClient.getAssignmentById(id);
    }

    @Operation(summary = "更新作业信息")
    @PostMapping("/assignment/updateAssignment")
    public Result<EduAssignmentVO> updateAssignment(@RequestBody EduAssignmentDTO dto) {
        return eduServiceFeignClient.updateAssignment(dto);
    }

    @Operation(summary = "删除指定作业")
    @PostMapping("/assignment/deleteAssignment/{id}")
    public Result<Void> deleteAssignment(@PathVariable Long id) {
        return eduServiceFeignClient.deleteAssignment(id);
    }

    @Operation(summary = "获取作业列表")
    @PostMapping("/assignment/getAssignmentList")
    public Result<List<EduAssignmentVO>> getAssignmentList() {
        return eduServiceFeignClient.getAssignmentList();
    }

    // =========================== 作业题目管理相关接口 ===========================

    @Operation(summary = "创建作业题目")
    @PostMapping("/assignment-question/createAssignmentQuestion")
    public Result<EduAssignmentQuestionVO> createAssignmentQuestion(@RequestBody EduAssignmentQuestionDTO dto) {
        return eduServiceFeignClient.createAssignmentQuestion(dto);
    }

    @Operation(summary = "根据ID获取作业题目详情")
    @PostMapping("/assignment-question/getAssignmentQuestionById/{id}")
    public Result<EduAssignmentQuestionVO> getAssignmentQuestionById(@PathVariable Long id) {
        return eduServiceFeignClient.getAssignmentQuestionById(id);
    }

    @Operation(summary = "更新作业题目信息")
    @PostMapping("/assignment-question/updateAssignmentQuestion")
    public Result<EduAssignmentQuestionVO> updateAssignmentQuestion(@RequestBody EduAssignmentQuestionDTO dto) {
        return eduServiceFeignClient.updateAssignmentQuestion(dto);
    }

    @Operation(summary = "删除指定作业题目")
    @PostMapping("/assignment-question/deleteAssignmentQuestion/{id}")
    public Result<Void> deleteAssignmentQuestion(@PathVariable Long id) {
        return eduServiceFeignClient.deleteAssignmentQuestion(id);
    }

    @Operation(summary = "获取作业题目列表")
    @PostMapping("/assignment-question/listAssignmentQuestion")
    public Result<List<EduAssignmentQuestionVO>> getAssignmentQuestionList() {
        return eduServiceFeignClient.getAssignmentQuestionList();
    }

    // =========================== 作业提交管理相关接口 ===========================

    @Operation(summary = "创建作业提交")
    @PostMapping("/assignment-submission/createAssignmentSubmission")
    public Result<EduAssignmentSubmissionVO> createAssignmentSubmission(@RequestBody EduAssignmentSubmissionDTO dto) {
        return eduServiceFeignClient.createAssignmentSubmission(dto);
    }

    @Operation(summary = "根据ID获取作业提交详情")
    @PostMapping("/assignment-submission/getAssignmentSubmissionById/{id}")
    public Result<EduAssignmentSubmissionVO> getAssignmentSubmissionById(@PathVariable Long id) {
        return eduServiceFeignClient.getAssignmentSubmissionById(id);
    }

    @Operation(summary = "更新作业提交信息")
    @PostMapping("/assignment-submission/updateAssignmentSubmission")
    public Result<EduAssignmentSubmissionVO> updateAssignmentSubmission(@RequestBody EduAssignmentSubmissionDTO dto) {
        return eduServiceFeignClient.updateAssignmentSubmission(dto);
    }

    @Operation(summary = "删除指定作业提交")
    @PostMapping("/assignment-submission/deleteAssignmentSubmission/{id}")
    public Result<Void> deleteAssignmentSubmission(@PathVariable Long id) {
        return eduServiceFeignClient.deleteAssignmentSubmission(id);
    }

    @Operation(summary = "获取作业提交列表")
    @PostMapping("/assignment-submission/getAssignmentSubmissionList")
    public Result<List<EduAssignmentSubmissionVO>> getAssignmentSubmissionList() {
        return eduServiceFeignClient.getAssignmentSubmissionList();
    }

    // =========================== 证书管理相关接口 ===========================

    @Operation(summary = "创建证书")
    @PostMapping("/certificate/createCertificate")
    public Result<EduCertificateVO> createCertificate(@RequestBody EduCertificateDTO dto) {
        return eduServiceFeignClient.createCertificate(dto);
    }

    @Operation(summary = "根据ID获取证书详情")
    @PostMapping("/certificate/getCertificateById/{id}")
    public Result<EduCertificateVO> getCertificateById(@PathVariable Long id) {
        return eduServiceFeignClient.getCertificateById(id);
    }

    @Operation(summary = "更新证书信息")
    @PostMapping("/certificate/updateCertificate")
    public Result<EduCertificateVO> updateCertificate(@RequestBody EduCertificateDTO dto) {
        return eduServiceFeignClient.updateCertificate(dto);
    }

    @Operation(summary = "删除指定证书")
    @PostMapping("/certificate/deleteCertificate/{id}")
    public Result<Void> deleteCertificate(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCertificate(id);
    }

    @Operation(summary = "获取证书列表")
    @PostMapping("/certificate/getCertificateList")
    public Result<List<EduCertificateVO>> getCertificateList() {
        return eduServiceFeignClient.getCertificateList();
    }

    // =========================== 章节管理相关接口 ===========================

    @Operation(summary = "创建章节")
    @PostMapping("/chapter/createChapter")
    public Result<EduChapterVO> createChapter(@RequestBody EduChapterDTO dto) {
        return eduServiceFeignClient.createChapter(dto);
    }

    @Operation(summary = "根据ID获取章节详情")
    @PostMapping("/chapter/getChapterById/{id}")
    public Result<EduChapterVO> getChapterById(@PathVariable Long id) {
        return eduServiceFeignClient.getChapterById(id);
    }

    @Operation(summary = "更新章节信息")
    @PostMapping("/chapter/updateChapter")
    public Result<EduChapterVO> updateChapter(@RequestBody EduChapterDTO dto) {
        return eduServiceFeignClient.updateChapter(dto);
    }

    @Operation(summary = "删除指定章节")
    @PostMapping("/chapter/deleteChapter/{id}")
    public Result<Void> deleteChapter(@PathVariable Long id) {
        return eduServiceFeignClient.deleteChapter(id);
    }

    @Operation(summary = "获取章节列表")
    @PostMapping("/chapter/list")
    public Result<List<EduChapterVO>> getChapterList() {
        return eduServiceFeignClient.getChapterList();
    }

    @Operation(summary = "根据课程ID获取章节列表")
    @PostMapping("/chapter/getChaptersByCourseId/{courseId}")
    public Result<List<EduChapterVO>> getChaptersByCourseId(@PathVariable Long courseId) {
        return eduServiceFeignClient.getChaptersByCourseId(courseId);
    }

    // =========================== 签到管理相关接口 ===========================

    @Operation(summary = "创建签到")
    @PostMapping("/checkin/createCheckin")
    public Result<EduCheckinVO> createCheckin(@RequestBody EduCheckinDTO dto) {
        return eduServiceFeignClient.createCheckin(dto);
    }

    @Operation(summary = "根据ID获取签到详情")
    @PostMapping("/checkin/getCheckinById/{id}")
    public Result<EduCheckinVO> getCheckinById(@PathVariable Long id) {
        return eduServiceFeignClient.getCheckinById(id);
    }

    @Operation(summary = "更新签到信息")
    @PostMapping("/checkin/updateCheckin")
    public Result<EduCheckinVO> updateCheckin(@RequestBody EduCheckinDTO dto) {
        return eduServiceFeignClient.updateCheckin(dto);
    }

    @Operation(summary = "删除指定签到")
    @PostMapping("/checkin/deleteCheckin/{id}")
    public Result<Void> deleteCheckin(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCheckin(id);
    }

    @Operation(summary = "获取签到列表")
    @PostMapping("/checkin/getCheckinList")
    public Result<List<EduCheckinVO>> getCheckinList() {
        return eduServiceFeignClient.getCheckinList();
    }

    // =========================== 签到记录管理相关接口 ===========================

    @Operation(summary = "创建签到记录")
    @PostMapping("/checkin-record/createCheckinRecord")
    public Result<EduCheckinRecordVO> createCheckinRecord(@RequestBody EduCheckinRecordDTO dto) {
        return eduServiceFeignClient.createCheckinRecord(dto);
    }

    @Operation(summary = "根据ID获取签到记录详情")
    @PostMapping("/checkin-record/getCheckinRecordById/{id}")
    public Result<EduCheckinRecordVO> getCheckinRecordById(@PathVariable Long id) {
        return eduServiceFeignClient.getCheckinRecordById(id);
    }

    @Operation(summary = "更新签到记录信息")
    @PostMapping("/checkin-record/updateCheckinRecord")
    public Result<EduCheckinRecordVO> updateCheckinRecord(@RequestBody EduCheckinRecordDTO dto) {
        return eduServiceFeignClient.updateCheckinRecord(dto);
    }

    @Operation(summary = "删除指定签到记录")
    @PostMapping("/checkin-record/deleteCheckinRecord/{id}")
    public Result<Void> deleteCheckinRecord(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCheckinRecord(id);
    }

    @Operation(summary = "获取签到记录列表")
    @PostMapping("/checkin-record/getCheckinRecordList")
    public Result<List<EduCheckinRecordVO>> getCheckinRecordList() {
        return eduServiceFeignClient.getCheckinRecordList();
    }

    // =========================== 课程班级关系管理相关接口 ===========================

    @Operation(summary = "创建课程班级关系")
    @PostMapping("/course-class/createCourseClass")
    public Result<EduCourseClassVO> createCourseClass(@RequestBody EduCourseClassDTO dto) {
        return eduServiceFeignClient.createCourseClass(dto);
    }

    @Operation(summary = "根据ID获取课程班级关系详情")
    @PostMapping("/course-class/getCourseClassById/{id}")
    public Result<EduCourseClassVO> getCourseClassById(@PathVariable Long id) {
        return eduServiceFeignClient.getCourseClassById(id);
    }

    @Operation(summary = "更新课程班级关系信息")
    @PostMapping("/course-class/updateCourseClass")
    public Result<EduCourseClassVO> updateCourseClass(@RequestBody EduCourseClassDTO dto) {
        return eduServiceFeignClient.updateCourseClass(dto);
    }

    @Operation(summary = "删除指定课程班级关系")
    @PostMapping("/course-class/deleteCourseClass/{id}")
    public Result<Void> deleteCourseClass(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCourseClass(id);
    }

    @Operation(summary = "获取课程班级关系列表")
    @PostMapping("/course-class/getCourseClassList")
    public Result<List<EduCourseClassVO>> getCourseClassList() {
        return eduServiceFeignClient.getCourseClassList();
    }

    // =========================== 课程评价管理相关接口 ===========================

    @Operation(summary = "创建课程评价")
    @PostMapping("/course-rating/createCourseRating")
    public Result<EduCourseRatingVO> createCourseRating(@RequestBody EduCourseRatingDTO dto) {
        return eduServiceFeignClient.createCourseRating(dto);
    }

    @Operation(summary = "根据ID获取课程评价详情")
    @PostMapping("/course-rating/getCourseRatingById/{id}")
    public Result<EduCourseRatingVO> getCourseRatingById(@PathVariable Long id) {
        return eduServiceFeignClient.getCourseRatingById(id);
    }

    @Operation(summary = "更新课程评价信息")
    @PostMapping("/course-rating/updateCourseRating")
    public Result<EduCourseRatingVO> updateCourseRating(@RequestBody EduCourseRatingDTO dto) {
        return eduServiceFeignClient.updateCourseRating(dto);
    }

    @Operation(summary = "删除指定课程评价")
    @PostMapping("/course-rating/deleteCourseRating/{id}")
    public Result<Void> deleteCourseRating(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCourseRating(id);
    }

    @Operation(summary = "获取课程评价列表")
    @PostMapping("/course-rating/getCourseRatingList")
    public Result<List<EduCourseRatingVO>> getCourseRatingList() {
        return eduServiceFeignClient.getCourseRatingList();
    }

    // =========================== 课程选课管理相关接口 ===========================

    @Operation(summary = "创建课程选课")
    @PostMapping("/course-selection/createCourseSelection")
    public Result<EduCourseSelectionVO> createCourseSelection(@RequestBody EduCourseSelectionDTO dto) {
        return eduServiceFeignClient.createCourseSelection(dto);
    }

    @Operation(summary = "根据ID获取课程选课详情")
    @PostMapping("/course-selection/getCourseSelectionById/{id}")
    public Result<EduCourseSelectionVO> getCourseSelectionById(@PathVariable Long id) {
        return eduServiceFeignClient.getCourseSelectionById(id);
    }

    @Operation(summary = "更新课程选课信息")
    @PostMapping("/course-selection/updateCourseSelection")
    public Result<EduCourseSelectionVO> updateCourseSelection(@RequestBody EduCourseSelectionDTO dto) {
        return eduServiceFeignClient.updateCourseSelection(dto);
    }

    @Operation(summary = "删除指定课程选课")
    @PostMapping("/course-selection/deleteCourseSelection/{id}")
    public Result<Void> deleteCourseSelection(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCourseSelection(id);
    }

    @Operation(summary = "获取课程选课列表")
    @PostMapping("/course-selection/getCourseSelectionList")
    public Result<List<EduCourseSelectionVO>> getCourseSelectionList() {
        return eduServiceFeignClient.getCourseSelectionList();
    }

    // =========================== 学分管理相关接口 ===========================

    @Operation(summary = "创建学分")
    @PostMapping("/credit/createCredit")
    public Result<EduCreditVO> createCredit(@RequestBody EduCreditDTO dto) {
        return eduServiceFeignClient.createCredit(dto);
    }

    @Operation(summary = "根据ID获取学分详情")
    @PostMapping("/credit/getCreditById/{id}")
    public Result<EduCreditVO> getCreditById(@PathVariable Long id) {
        return eduServiceFeignClient.getCreditById(id);
    }

    @Operation(summary = "更新学分信息")
    @PostMapping("/credit/updateCredit")
    public Result<EduCreditVO> updateCredit(@RequestBody EduCreditDTO dto) {
        return eduServiceFeignClient.updateCredit(dto);
    }

    @Operation(summary = "删除指定学分")
    @PostMapping("/credit/deleteCredit/{id}")
    public Result<Void> deleteCredit(@PathVariable Long id) {
        return eduServiceFeignClient.deleteCredit(id);
    }

    @Operation(summary = "获取学分列表")
    @PostMapping("/credit/getCreditList")
    public Result<List<EduCreditVO>> getCreditList() {
        return eduServiceFeignClient.getCreditList();
    }

    // =========================== 院系管理相关接口 ===========================

    @Operation(summary = "创建院系")
    @PostMapping("/department/createDepartment")
    public Result<EduDepartmentVO> createDepartment(@RequestBody EduDepartmentDTO dto) {
        return eduServiceFeignClient.createDepartment(dto);
    }

    @Operation(summary = "根据ID获取院系详情")
    @PostMapping("/department/getDepartmentById/{id}")
    public Result<EduDepartmentVO> getDepartmentById(@PathVariable Long id) {
        return eduServiceFeignClient.getDepartmentById(id);
    }

    @Operation(summary = "更新院系信息")
    @PostMapping("/department/updateDepartment")
    public Result<EduDepartmentVO> updateDepartment(@RequestBody EduDepartmentDTO dto) {
        return eduServiceFeignClient.updateDepartment(dto);
    }

    @Operation(summary = "删除指定院系")
    @PostMapping("/department/deleteDepartment/{id}")
    public Result<Void> deleteDepartment(@PathVariable Long id) {
        return eduServiceFeignClient.deleteDepartment(id);
    }

    @Operation(summary = "获取院系列表")
    @PostMapping("/department/getDepartmentList")
    public Result<List<EduDepartmentVO>> getDepartmentList() {
        return eduServiceFeignClient.getDepartmentList();
    }

    // =========================== 考试记录管理相关接口 ===========================

    @Operation(summary = "创建考试记录")
    @PostMapping("/exam-record/createExamRecord")
    public Result<EduExamRecordVO> createExamRecord(@RequestBody EduExamRecordDTO dto) {
        return eduServiceFeignClient.createExamRecord(dto);
    }

    @Operation(summary = "根据ID获取考试记录详情")
    @PostMapping("/exam-record/getExamRecordById/{id}")
    public Result<EduExamRecordVO> getExamRecordById(@PathVariable Long id) {
        return eduServiceFeignClient.getExamRecordById(id);
    }

    @Operation(summary = "更新考试记录信息")
    @PostMapping("/exam-record/updateExamRecord")
    public Result<EduExamRecordVO> updateExamRecord(@RequestBody EduExamRecordDTO dto) {
        return eduServiceFeignClient.updateExamRecord(dto);
    }

    @Operation(summary = "删除指定考试记录")
    @PostMapping("/exam-record/deleteExamRecord/{id}")
    public Result<Void> deleteExamRecord(@PathVariable Long id) {
        return eduServiceFeignClient.deleteExamRecord(id);
    }

    @Operation(summary = "获取考试记录列表")
    @PostMapping("/exam-record/getExamRecordList")
    public Result<List<EduExamRecordVO>> getExamRecordList() {
        return eduServiceFeignClient.getExamRecordList();
    }

    // =========================== 论坛点赞管理相关接口 ===========================

    @Operation(summary = "创建论坛点赞记录")
    @PostMapping("/forum-like/createForumLike")
    public Result<EduForumLikeVO> createForumLike(@RequestBody EduForumLikeDTO dto) {
        return eduServiceFeignClient.createForumLike(dto);
    }

    @Operation(summary = "根据ID获取论坛点赞记录详情")
    @PostMapping("/forum-like/getForumLikeById/{id}")
    public Result<EduForumLikeVO> getForumLikeById(@PathVariable Long id) {
        return eduServiceFeignClient.getForumLikeById(id);
    }

    @Operation(summary = "更新论坛点赞记录信息")
    @PostMapping("/forum-like/updateForumLike")
    public Result<EduForumLikeVO> updateForumLike(@RequestBody EduForumLikeDTO dto) {
        return eduServiceFeignClient.updateForumLike(dto);
    }

    @Operation(summary = "删除指定论坛点赞记录")
    @PostMapping("/forum-like/deleteForumLike/{id}")
    public Result<Void> deleteForumLike(@PathVariable Long id) {
        return eduServiceFeignClient.deleteForumLike(id);
    }

    @Operation(summary = "获取论坛点赞记录列表")
    @PostMapping("/forum-like/getForumLikeList")
    public Result<List<EduForumLikeVO>> getForumLikeList() {
        return eduServiceFeignClient.getForumLikeList();
    }

    // =========================== 论坛回复管理相关接口 ===========================

    @Operation(summary = "创建论坛回复")
    @PostMapping("/forum-reply/createForumReply")
    public Result<EduForumReplyVO> createForumReply(@RequestBody EduForumReplyDTO dto) {
        return eduServiceFeignClient.createForumReply(dto);
    }

    @Operation(summary = "根据ID获取论坛回复详情")
    @PostMapping("/forum-reply/getForumReplyById/{id}")
    public Result<EduForumReplyVO> getForumReplyById(@PathVariable Long id) {
        return eduServiceFeignClient.getForumReplyById(id);
    }

    @Operation(summary = "更新论坛回复信息")
    @PostMapping("/forum-reply/updateForumReply")
    public Result<EduForumReplyVO> updateForumReply(@RequestBody EduForumReplyDTO dto) {
        return eduServiceFeignClient.updateForumReply(dto);
    }

    @Operation(summary = "删除指定论坛回复")
    @PostMapping("/forum-reply/deleteForumReply/{id}")
    public Result<Void> deleteForumReply(@PathVariable Long id) {
        return eduServiceFeignClient.deleteForumReply(id);
    }

    @Operation(summary = "获取论坛回复列表")
    @PostMapping("/forum-reply/getForumReplyList")
    public Result<List<EduForumReplyVO>> getForumReplyList() {
        return eduServiceFeignClient.getForumReplyList();
    }

    // =========================== 论坛主题管理相关接口 ===========================

    @Operation(summary = "创建论坛主题")
    @PostMapping("/forum-topic/createForumTopic")
    public Result<EduForumTopicVO> createForumTopic(@RequestBody EduForumTopicDTO dto) {
        return eduServiceFeignClient.createForumTopic(dto);
    }

    @Operation(summary = "根据ID获取论坛主题详情")
    @PostMapping("/forum-topic/getForumTopicById/{id}")
    public Result<EduForumTopicVO> getForumTopicById(@PathVariable Long id) {
        return eduServiceFeignClient.getForumTopicById(id);
    }

    @Operation(summary = "更新论坛主题信息")
    @PostMapping("/forum-topic/updateForumTopic")
    public Result<EduForumTopicVO> updateForumTopic(@RequestBody EduForumTopicDTO dto) {
        return eduServiceFeignClient.updateForumTopic(dto);
    }

    @Operation(summary = "删除指定论坛主题")
    @PostMapping("/forum-topic/deleteForumTopic/{id}")
    public Result<Void> deleteForumTopic(@PathVariable Long id) {
        return eduServiceFeignClient.deleteForumTopic(id);
    }

    @Operation(summary = "获取论坛主题列表")
    @PostMapping("/forum-topic/getForumTopicList")
    public Result<List<EduForumTopicVO>> getForumTopicList() {
        return eduServiceFeignClient.getForumTopicList();
    }

    // =========================== 知识点管理相关接口 ===========================

    @Operation(summary = "创建知识点")
    @PostMapping("/knowledge-point/createKnowledgePoint")
    public Result<EduKnowledgePointVO> createKnowledgePoint(@RequestBody EduKnowledgePointDTO dto) {
        return eduServiceFeignClient.createKnowledgePoint(dto);
    }

    @Operation(summary = "根据ID获取知识点详情")
    @PostMapping("/knowledge-point/getKnowledgePointById/{id}")
    public Result<EduKnowledgePointVO> getKnowledgePointById(@PathVariable Long id) {
        return eduServiceFeignClient.getKnowledgePointById(id);
    }

    @Operation(summary = "更新知识点信息")
    @PostMapping("/knowledge-point/updateKnowledgePoint")
    public Result<EduKnowledgePointVO> updateKnowledgePoint(@RequestBody EduKnowledgePointDTO dto) {
        return eduServiceFeignClient.updateKnowledgePoint(dto);
    }

    @Operation(summary = "删除指定知识点")
    @PostMapping("/knowledge-point/deleteKnowledgePoint/{id}")
    public Result<Void> deleteKnowledgePoint(@PathVariable Long id) {
        return eduServiceFeignClient.deleteKnowledgePoint(id);
    }

    @Operation(summary = "获取知识点列表")
    @PostMapping("/knowledge-point/getKnowledgePointList")
    public Result<List<EduKnowledgePointVO>> getKnowledgePointList() {
        return eduServiceFeignClient.getKnowledgePointList();
    }

    // =========================== 直播课堂管理相关接口 ===========================

    @Operation(summary = "创建直播课堂")
    @PostMapping("/live-session/createLiveSession")
    public Result<EduLiveSessionVO> createLiveSession(@RequestBody EduLiveSessionDTO dto) {
        return eduServiceFeignClient.createLiveSession(dto);
    }

    @Operation(summary = "根据ID获取直播课堂详情")
    @PostMapping("/live-session/getLiveSessionById/{id}")
    public Result<EduLiveSessionVO> getLiveSessionById(@PathVariable Long id) {
        return eduServiceFeignClient.getLiveSessionById(id);
    }

    @Operation(summary = "更新直播课堂信息")
    @PostMapping("/live-session/updateLiveSession")
    public Result<EduLiveSessionVO> updateLiveSession(@RequestBody EduLiveSessionDTO dto) {
        return eduServiceFeignClient.updateLiveSession(dto);
    }

    @Operation(summary = "删除指定直播课堂")
    @PostMapping("/live-session/deleteLiveSession/{id}")
    public Result<Void> deleteLiveSession(@PathVariable Long id) {
        return eduServiceFeignClient.deleteLiveSession(id);
    }

    @Operation(summary = "获取直播课堂列表")
    @PostMapping("/live-session/getLiveSessionList")
    public Result<List<EduLiveSessionVO>> getLiveSessionList() {
        return eduServiceFeignClient.getLiveSessionList();
    }

    // =========================== 直播观看记录管理相关接口 ===========================

    @Operation(summary = "创建直播观看记录")
    @PostMapping("/live-watch-record/createLiveWatchRecord")
    public Result<EduLiveWatchRecordVO> createLiveWatchRecord(@RequestBody EduLiveWatchRecordDTO dto) {
        return eduServiceFeignClient.createLiveWatchRecord(dto);
    }

    @Operation(summary = "根据ID获取直播观看记录详情")
    @PostMapping("/live-watch-record/getLiveWatchRecordById/{id}")
    public Result<EduLiveWatchRecordVO> getLiveWatchRecordById(@PathVariable Long id) {
        return eduServiceFeignClient.getLiveWatchRecordById(id);
    }

    @Operation(summary = "更新直播观看记录信息")
    @PostMapping("/live-watch-record/updateLiveWatchRecord")
    public Result<EduLiveWatchRecordVO> updateLiveWatchRecord(@RequestBody EduLiveWatchRecordDTO dto) {
        return eduServiceFeignClient.updateLiveWatchRecord(dto);
    }

    @Operation(summary = "删除指定直播观看记录")
    @PostMapping("/live-watch-record/deleteLiveWatchRecord/{id}")
    public Result<Void> deleteLiveWatchRecord(@PathVariable Long id) {
        return eduServiceFeignClient.deleteLiveWatchRecord(id);
    }

    @Operation(summary = "获取直播观看记录列表")
    @PostMapping("/live-watch-record/list")
    public Result<List<EduLiveWatchRecordVO>> getLiveWatchRecordList() {
        return eduServiceFeignClient.getLiveWatchRecordList();
    }

    // =========================== 专业管理相关接口 ===========================

    @Operation(summary = "创建专业")
    @PostMapping("/major/createMajor")
    public Result<EduMajorVO> createMajor(@RequestBody EduMajorDTO dto) {
        return eduServiceFeignClient.createMajor(dto);
    }

    @Operation(summary = "根据ID获取专业详情")
    @PostMapping("/major/getMajorById/{id}")
    public Result<EduMajorVO> getMajorById(@PathVariable Long id) {
        return eduServiceFeignClient.getMajorById(id);
    }

    @Operation(summary = "更新专业信息")
    @PostMapping("/major/updateMajor")
    public Result<EduMajorVO> updateMajor(@RequestBody EduMajorDTO dto) {
        return eduServiceFeignClient.updateMajor(dto);
    }

    @Operation(summary = "删除指定专业")
    @PostMapping("/major/deleteMajor/{id}")
    public Result<Void> deleteMajor(@PathVariable Long id) {
        return eduServiceFeignClient.deleteMajor(id);
    }

    @Operation(summary = "获取专业列表")
    @PostMapping("/major/getMajorList")
    public Result<List<EduMajorVO>> getMajorList() {
        return eduServiceFeignClient.getMajorList();
    }

    // =========================== 学习进度管理相关接口 ===========================

    @Operation(summary = "创建学习进度")
    @PostMapping("/progress/createProgress")
    public Result<EduProgressVO> createProgress(@RequestBody EduProgressDTO dto) {
        return eduServiceFeignClient.createProgress(dto);
    }

    @Operation(summary = "根据ID获取学习进度详情")
    @PostMapping("/progress/getProgressById/{id}")
    public Result<EduProgressVO> getProgressById(@PathVariable Long id) {
        return eduServiceFeignClient.getProgressById(id);
    }

    @Operation(summary = "更新学习进度信息")
    @PostMapping("/progress/updateProgress")
    public Result<EduProgressVO> updateProgress(@RequestBody EduProgressDTO dto) {
        return eduServiceFeignClient.updateProgress(dto);
    }

    @Operation(summary = "删除指定学习进度")
    @PostMapping("/progress/deleteProgress/{id}")
    public Result<Void> deleteProgress(@PathVariable Long id) {
        return eduServiceFeignClient.deleteProgress(id);
    }

    @Operation(summary = "获取学习进度列表")
    @PostMapping("/progress/getProgressList")
    public Result<List<EduProgressVO>> getProgressList() {
        return eduServiceFeignClient.getProgressList();
    }

    // =========================== 题库管理相关接口 ===========================

    @Operation(summary = "创建题库")
    @PostMapping("/question-bank/createQuestionBank")
    public Result<EduQuestionBankVO> createQuestionBank(@RequestBody EduQuestionBankDTO dto) {
        return eduServiceFeignClient.createQuestionBank(dto);
    }

    @Operation(summary = "根据ID获取题库详情")
    @PostMapping("/question-bank/getQuestionBankById/{id}")
    public Result<EduQuestionBankVO> getQuestionBankById(@PathVariable Long id) {
        return eduServiceFeignClient.getQuestionBankById(id);
    }

    @Operation(summary = "更新题库信息")
    @PostMapping("/question-bank/updateQuestionBank")
    public Result<EduQuestionBankVO> updateQuestionBank(@RequestBody EduQuestionBankDTO dto) {
        return eduServiceFeignClient.updateQuestionBank(dto);
    }

    @Operation(summary = "删除指定题库")
    @PostMapping("/question-bank/deleteQuestionBank/{id}")
    public Result<Void> deleteQuestionBank(@PathVariable Long id) {
        return eduServiceFeignClient.deleteQuestionBank(id);
    }

    @Operation(summary = "获取题库列表")
    @PostMapping("/question-bank/getQuestionBankList")
    public Result<List<EduQuestionBankVO>> getQuestionBankList() {
        return eduServiceFeignClient.getQuestionBankList();
    }

    // =========================== 题目管理相关接口 ===========================

    @Operation(summary = "创建题目")
    @PostMapping("/question/createQuestion")
    public Result<EduQuestionVO> createQuestion(@RequestBody EduQuestionDTO dto) {
        return eduServiceFeignClient.createQuestion(dto);
    }

    @Operation(summary = "根据ID获取题目详情")
    @PostMapping("/question/getQuestionById/{id}")
    public Result<EduQuestionVO> getQuestionById(@PathVariable Long id) {
        return eduServiceFeignClient.getQuestionById(id);
    }

    @Operation(summary = "更新题目信息")
    @PostMapping("/question/updateQuestion")
    public Result<EduQuestionVO> updateQuestion(@RequestBody EduQuestionDTO dto) {
        return eduServiceFeignClient.updateQuestion(dto);
    }

    @Operation(summary = "删除指定题目")
    @PostMapping("/question/deleteQuestion/{id}")
    public Result<Void> deleteQuestion(@PathVariable Long id) {
        return eduServiceFeignClient.deleteQuestion(id);
    }

    @Operation(summary = "获取题目列表")
    @PostMapping("/question/getQuestionList")
    public Result<List<EduQuestionVO>> getQuestionList() {
        return eduServiceFeignClient.getQuestionList();
    }

    // =========================== 课程评价点赞管理相关接口 ===========================

    @Operation(summary = "创建课程评价点赞记录")
    @PostMapping("/rating-like/createRatingLike")
    public Result<EduRatingLikeVO> createRatingLike(@RequestBody EduRatingLikeDTO dto) {
        return eduServiceFeignClient.createRatingLike(dto);
    }

    @Operation(summary = "根据ID获取课程评价点赞记录详情")
    @PostMapping("/rating-like/getRatingLikeById/{id}")
    public Result<EduRatingLikeVO> getRatingLikeById(@PathVariable Long id) {
        return eduServiceFeignClient.getRatingLikeById(id);
    }

    @Operation(summary = "更新课程评价点赞记录信息")
    @PostMapping("/rating-like/updateRatingLike")
    public Result<EduRatingLikeVO> updateRatingLike(@RequestBody EduRatingLikeDTO dto) {
        return eduServiceFeignClient.updateRatingLike(dto);
    }

    @Operation(summary = "删除指定课程评价点赞记录")
    @PostMapping("/rating-like/deleteRatingLike/{id}")
    public Result<Void> deleteRatingLike(@PathVariable Long id) {
        return eduServiceFeignClient.deleteRatingLike(id);
    }

    @Operation(summary = "获取课程评价点赞记录列表")
    @PostMapping("/rating-like/getRatingLikeList")
    public Result<List<EduRatingLikeVO>> getRatingLikeList() {
        return eduServiceFeignClient.getRatingLikeList();
    }

    // =========================== 课程资源管理相关接口 ===========================

    @Operation(summary = "创建课程资源")
    @PostMapping("/resource/createResource")
    public Result<EduResourceVO> createResource(@RequestBody EduResourceDTO dto) {
        return eduServiceFeignClient.createResource(dto);
    }

    @Operation(summary = "根据ID获取课程资源详情")
    @PostMapping("/resource/getResourceById/{id}")
    public Result<EduResourceVO> getResourceById(@PathVariable Long id) {
        return eduServiceFeignClient.getResourceById(id);
    }

    @Operation(summary = "更新课程资源信息")
    @PostMapping("/resource/updateResource")
    public Result<EduResourceVO> updateResource(@RequestBody EduResourceDTO dto) {
        return eduServiceFeignClient.updateResource(dto);
    }

    @Operation(summary = "删除指定课程资源")
    @PostMapping("/resource/deleteResource/{id}")
    public Result<Void> deleteResource(@PathVariable Long id) {
        return eduServiceFeignClient.deleteResource(id);
    }

    @Operation(summary = "获取课程资源列表")
    @PostMapping("/resource/getResourceList")
    public Result<List<EduResourceVO>> getResourceList() {
        return eduServiceFeignClient.getResourceList();
    }

    // =========================== 学校管理相关接口 ===========================

    @Operation(summary = "创建学校")
    @PostMapping("/school/createSchool")
    public Result<EduSchoolVO> createSchool(@RequestBody EduSchoolDTO dto) {
        return eduServiceFeignClient.createSchool(dto);
    }

    @Operation(summary = "根据ID获取学校详情")
    @PostMapping("/school/getSchoolById/{id}")
    public Result<EduSchoolVO> getSchoolById(@PathVariable Long id) {
        return eduServiceFeignClient.getSchoolById(id);
    }

    @Operation(summary = "更新学校信息")
    @PostMapping("/school/updateSchool")
    public Result<EduSchoolVO> updateSchool(@RequestBody EduSchoolDTO dto) {
        return eduServiceFeignClient.updateSchool(dto);
    }

    @Operation(summary = "删除指定学校")
    @PostMapping("/school/deleteSchool/{id}")
    public Result<Void> deleteSchool(@PathVariable Long id) {
        return eduServiceFeignClient.deleteSchool(id);
    }

    @Operation(summary = "获取学校列表")
    @PostMapping("/school/getSchoolList")
    public Result<List<EduSchoolVO>> getSchoolList() {
        return eduServiceFeignClient.getSchoolList();
    }

    // =========================== 学生成绩管理相关接口 ===========================

    @Operation(summary = "创建学生成绩")
    @PostMapping("/student-grade/createStudentGrade")
    public Result<EduStudentGradeVO> createStudentGrade(@RequestBody EduStudentGradeDTO dto) {
        return eduServiceFeignClient.createStudentGrade(dto);
    }

    @Operation(summary = "根据ID获取学生成绩详情")
    @PostMapping("/student-grade/getStudentGradeById/{id}")
    public Result<EduStudentGradeVO> getStudentGradeById(@PathVariable Long id) {
        return eduServiceFeignClient.getStudentGradeById(id);
    }

    @Operation(summary = "更新学生成绩信息")
    @PostMapping("/student-grade/updateStudentGrade")
    public Result<EduStudentGradeVO> updateStudentGrade(@RequestBody EduStudentGradeDTO dto) {
        return eduServiceFeignClient.updateStudentGrade(dto);
    }

    @Operation(summary = "删除指定学生成绩")
    @PostMapping("/student-grade/deleteStudentGrade/{id}")
    public Result<Void> deleteStudentGrade(@PathVariable Long id) {
        return eduServiceFeignClient.deleteStudentGrade(id);
    }

    @Operation(summary = "获取学生成绩列表")
    @PostMapping("/student-grade/getStudentGradeList")
    public Result<List<EduStudentGradeVO>> getStudentGradeList() {
        return eduServiceFeignClient.getStudentGradeList();
    }

    // =========================== 预警日志管理相关接口 ===========================

    @Operation(summary = "创建预警日志")
    @PostMapping("/warning-log/createWarningLog")
    public Result<EduWarningLogVO> createWarningLog(@RequestBody EduWarningLogDTO dto) {
        return eduServiceFeignClient.createWarningLog(dto);
    }

    @Operation(summary = "根据ID获取预警日志详情")
    @PostMapping("/warning-log/getWarningLogById/{id}")
    public Result<EduWarningLogVO> getWarningLogById(@PathVariable Long id) {
        return eduServiceFeignClient.getWarningLogById(id);
    }

    @Operation(summary = "更新预警日志信息")
    @PostMapping("/warning-log/updateWarningLog")
    public Result<EduWarningLogVO> updateWarningLog(@RequestBody EduWarningLogDTO dto) {
        return eduServiceFeignClient.updateWarningLog(dto);
    }

    @Operation(summary = "删除指定预警日志")
    @PostMapping("/warning-log/deleteWarningLog/{id}")
    public Result<Void> deleteWarningLog(@PathVariable Long id) {
        return eduServiceFeignClient.deleteWarningLog(id);
    }

    @Operation(summary = "获取预警日志列表")
    @PostMapping("/warning-log/getWarningLogList")
    public Result<List<EduWarningLogVO>> getWarningLogList() {
        return eduServiceFeignClient.getWarningLogList();
    }

    // =========================== 预警规则管理相关接口 ===========================

    @Operation(summary = "创建预警规则")
    @PostMapping("/warning-rule/createWarningRule")
    public Result<EduWarningRuleVO> createWarningRule(@RequestBody EduWarningRuleDTO dto) {
        return eduServiceFeignClient.createWarningRule(dto);
    }

    @Operation(summary = "根据ID获取预警规则详情")
    @PostMapping("/warning-rule/getWarningRuleById/{id}")
    public Result<EduWarningRuleVO> getWarningRuleById(@PathVariable Long id) {
        return eduServiceFeignClient.getWarningRuleById(id);
    }

    @Operation(summary = "更新预警规则信息")
    @PostMapping("/warning-rule/updateWarningRule")
    public Result<EduWarningRuleVO> updateWarningRule(@RequestBody EduWarningRuleDTO dto) {
        return eduServiceFeignClient.updateWarningRule(dto);
    }

    @Operation(summary = "删除指定预警规则")
    @PostMapping("/warning-rule/deleteWarningRule/{id}")
    public Result<Void> deleteWarningRule(@PathVariable Long id) {
        return eduServiceFeignClient.deleteWarningRule(id);
    }

    @Operation(summary = "获取预警规则列表")
    @PostMapping("/warning-rule/getWarningRuleList")
    public Result<List<EduWarningRuleVO>> getWarningRuleList() {
        return eduServiceFeignClient.getWarningRuleList();
    }
}